var mongoose = require('mongoose');
mongoose.set('strictQuery', true);
mongoose.connect('mongodb://127.0.0.1:27017/mongo_test')

mongoose.connection.once('open',function () {
  console.log('链接成功')
})


var Scheme = mongoose.Schema;
//创建学生的scheme对象
let stuScheme = new Scheme({
  name:String,
  age:Number,
  gender: {
    type:String,
    default:'female'
  },
  address:String
});

//创建model 只有通过model才能操作文档
//参数一：数据库中集合名称
//参数二：对应的学生scheme
let StuModel = mongoose.model('student',stuScheme);

// StuModel.create({
//   name:'孙悟空',
//   age:18,
//   gender:'male',
//   address:'花果山'
// },function (err) {
//    if (!err){
//      console.log('插入成功')
//    }
// })

//插入数组
// let arr1 = [
//   {
//     name:'唐僧',
//     age:18,
//     gender:'male',
//     address:'京都'
//   },
//   {
//     name:'白骨精',
//     age:18,
//     address:'白骨山'
//   }
// ]
//
// StuModel.create(arr1,function () {
//   console.log('插入数组成功')
// })

//参数一：查询条件
//参数二：投影
//参数三：选项
//参数四：回调函数，必填
//只读取name，不要id
// StuModel.find({},'name -_id',{skip:1},function (err, docs) {
//   if (!err){
//     console.log(docs);
//   }
// })


//修改
// StuModel.updateOne({name:'唐僧'},{$set:{age:20}},function (err) {
//   if (!err){
//     console.log('修改成功')
//   }
// })

//删除
// StuModel.remove({name:'白骨精'},function (err) {
//   if (!err){
//     console.log('删除成功')
//   }
// })

StuModel.count({},function (error, count) {
  console.log(count)
})


//document 和  数据库中的文档是一一对应的
//new 一个文档对象
// let stu1 = new StuModel({
//   name:'泵波霸',
//   age:45,
//   gender:'male',
//   address:'碧水波'
// })
//
//
// // save 方法存储(效果等同于Model.create)
// stu1.save(function (err) {
//   if (!err){
//     console.log('save successfully')
//   }
// })
// console.log(stu1);

//同理还有update和remove
//其实就是将之前的查询和修改分成两个函数了
// StuModel.findOne({name:'孙悟空'},function (err, doc) {
//   doc.update({$set:{age:99}},function (err) {
//     console.log('update successfully')
//   })
//
//   doc.remove(function (err) {
//     if (!err){
//       console.log('remove successfully')
//     }
//   })
// })


//get和set
// StuModel.findOne({name:'孙悟空'},function (err, doc) {
//   console.log(doc.get('address'))
//   doc.set('address','花果山')
//   console.log(doc.get('address'))
// })




//toJSON 和 toObject


